/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package entidad;

import java.io.Serializable;
import java.util.Calendar;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.GenerationType;
import javax.persistence.Temporal;

/**
 *
 * @author tuareg
 */
@Entity
public class Cargo implements Serializable {

    public Cargo() {
    }

    public Cargo( String nombre,Horario horario, String salarioBasico, Departamento departamento,String estado, String nivelPermisos,Calendar fechaDeModificacion){
        
        this.departamento = departamento;
        this.nombre = nombre;
        this.salarioBasico = salarioBasico;
        this.estado = estado;
        this.nivelPermisos = nivelPermisos;
        this.horario = horario;
        this.fechaDeModificacion= fechaDeModificacion;

    }

    public Cargo(String nombre){
        this(nombre,new Horario(),"99",new Departamento(),"Activo", "Gerente",Calendar.getInstance());
    }
    public Cargo(String nombre, String Estado){
        this(nombre,new Horario(),"99",new Departamento(),Estado, "Gerente",Calendar.getInstance());
    }


    public Departamento getDepartamento() {
        return departamento;
    }

    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }

   

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getSalarioBásico() {
        return salarioBasico;
    }

    public void setSalarioBásico(String salarioBásico) {
        this.salarioBasico = salarioBásico;
    }

    public Horario getHorario() {
        return horario;
    }

    public void setHorario(Horario horario) {
        this.horario = horario;
    }


    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getNivelPermisos() {
        return nivelPermisos;
    }

    public void setNivelPermisos(String nivelPermisos) {
        this.nivelPermisos = nivelPermisos;
    }

    public List<Candidato> getCandidatos() {
        return candidatos;
    }

    public void setCandidatos(List<Candidato> candidatos) {
        this.candidatos = candidatos;
    }

    public List<Empleado> getEmpleados() {
        return empleados;
    }

    public void setEmpleados(List<Empleado> empleados) {
        this.empleados = empleados;
    }

    public CambiosCargos getCambiosCargos() {
        return cambiosCargos;
    }

    public void setCambiosCargos(CambiosCargos cambiosCargos) {
        this.cambiosCargos = cambiosCargos;
    }

    public Long getIdCargo() {
        return idCargo;
    }

    public void setIdCargo(Long idCargo) {
        this.idCargo = idCargo;
    }

    public Calendar getFechaDeModificacion() {
        return fechaDeModificacion;
    }

    public void setFechaDeModificacion(Calendar fechaDeModificacion) {
        this.fechaDeModificacion = fechaDeModificacion;
    }

	public boolean isUltimaVersion() {
		return ultimaVersion;
	}

	public void setUltimaVersion(boolean ultimaVersion) {
		this.ultimaVersion = ultimaVersion;
	}


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idCargo;
    
    private String nombre;
    @OneToOne
    private Horario horario;
    private String salarioBasico;
    @ManyToOne
    private Departamento departamento;
    @OneToMany (mappedBy = "cargo")
    private List<Candidato> candidatos;
    @OneToMany (mappedBy = "cargoAsociado")
    private List<Empleado> empleados;
    private String estado;
    private String nivelPermisos;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar fechaDeModificacion;
    @ManyToOne
    private CambiosCargos cambiosCargos;
    private boolean ultimaVersion=false;
}
